import 'package:flutter/material.dart';

class RoundedImage extends StatelessWidget {
  final String imageUrl;          // 图片的 URL 或本地图片路径
  final double? width;            // 图片的宽度
  final double? height;           // 图片的高度
  final BoxFit fit;               // 图片的填充方式
  final double borderRadius;      // 圆角的半径
  final double? aspectRatio;      // 宽高比
  final bool isNetwork;           // 判断是网络图片还是本地图片

  // 构造函数
  const RoundedImage({
    required this.imageUrl,
    this.width,                    // 可选参数，宽度
    this.height,                   // 可选参数，高度
    this.fit = BoxFit.cover,       // 默认填充方式 BoxFit.cover
    this.borderRadius = 10.0,      // 默认圆角半径为 10
    this.aspectRatio,              // 可选参数，宽高比
    this.isNetwork = true,         // 默认加载网络图片
  });

  @override
  Widget build(BuildContext context) {
    // 创建图片控件
    final img = isNetwork
        ? Image.network(
      imageUrl,
      width: width,             // 设置宽度
      height: height,           // 设置高度
      fit: fit,                 // 设置填充方式
    )
        : Image.asset(
      imageUrl,
      width: width,             // 设置宽度
      height: height,           // 设置高度
      fit: fit,                 // 设置填充方式
    );

    // 如果传递了宽高比，则使用 AspectRatio 控件
    if (aspectRatio != null) {
      return AspectRatio(
        aspectRatio: aspectRatio!, // 使用传递的宽高比
        child: ClipRRect(
          borderRadius: BorderRadius.circular(borderRadius), // 设置圆角
          child: img,
        ),
      );
    } else {
      // 没有传递宽高比时，直接返回 Image 和圆角
      return ClipRRect(
        borderRadius: BorderRadius.circular(borderRadius), // 设置圆角
        child: img,
      );
    }
  }
}

//
// 使用示例
// 示例 1：加载网络图片
// dart
// 复制
// 编辑
// RoundedImage(
// imageUrl: "https://example.com/image.png",
// aspectRatio: 16 / 9,        // 设置宽高比为 16:9
// width: 300,                 // 设置宽度
// borderRadius: 20.0,         // 设置圆角半径
// isNetwork: true,            // 加载网络图片
// )
// 示例 2：加载本地图片
// dart
// 复制
// 编辑
// RoundedImage(
// imageUrl: "assets/images/local_image.png",  // 本地图片路径
// width: 300,                               // 设置宽度
// height: 200,                              // 设置高度
// borderRadius: 10.0,                       // 设置圆角半径
// isNetwork: false,                         // 加载本地图片
// )
// 示例 3：仅传递宽高比和本地图片 URL，自动计算宽高
// dart
// 复制
// 编辑
// RoundedImage(
// imageUrl: "assets/images/local_image.png",  // 本地图片路径
// aspectRatio: 16 / 9,        // 设置宽高比
// borderRadius: 15.0,         // 设置圆角半径
// isNetwork: false,           // 加载本地图片
// )
